# 编译器设置
CC = gcc
AR = ar
CFLAGS = -Wall -I./include
#
# # 目录设置
SRC_DIR = src
LIB_DIR = lib
INC_DIR = include
#
# # 源文件和目标文件
SRCS = $(wildcard $(SRC_DIR)/*.c)
OBJS = $(patsubst $(SRC_DIR)/%.c,$(LIB_DIR)/%.o,$(SRCS))
LIB = $(LIB_DIR)/libcal.a
TARGET = main
#
# # 默认目标
all: $(LIB_DIR) $(LIB) $(TARGET)
#
# # 创建lib目录
$(LIB_DIR):
	mkdir -p $(LIB_DIR)
#
# 	# 生成.o文件
$(LIB_DIR)/%.o: $(SRC_DIR)/%.c
	$(CC) $(CFLAGS) -c $< -o $@
#
# 		# 生成静态库
$(LIB): $(OBJS)
	$(AR) rcs $@ $^
#
# 			# 生成可执行文件
$(TARGET): test.c $(LIB)
	$(CC) $(CFLAGS) $^ -L$(LIB_DIR) -lcal -o $@
#
# 				# 伪目标：清理
.PHONY: clean
clean:
	rm -rf $(LIB_DIR)/*.o $(LIB) $(TARGET)
#
# 					# 伪目标：测试
.PHONY: test
test: $(TARGET)
	./$(TARGET)
